System, method and apparatus for utilizing transaction databases in a client - server environment

ABSTRACT

A system, method and apparatus for utilizing transaction databases in a client-server environment. The transaction databases can be used to receive and retain multiple server responses to consecutive client requests regardless of the temporal relationship between the multiple responses and consecutive requests. One method of the invention relates to how a client device displays information. This method is for use in a client-server system including one or more servers and a client device having a client transaction database, a client template database, and a user interface adapted to enable a user to enter requests. The method includes the steps of receiving a user request from the user via the user interface and retrieving a template from the client template database based on the user request. The template includes one or more data fields. The method also includes the step of retrieving information from the client transaction database based on the template, wherein the information relates to the one or more data fields of the template. A page is then displayed based on the template and the information relating to the one or more data fields.

RELATED APPLICATIONS

[0001] This application is a divisional of U.S. patent application No.09/523,165, filed on Mar. 10, 2000, entitled SYSTEM, METHOD ANDAPPARATUS FOR UTILIZING TRANSACTION DATABASES IN A CLIENT—SERVERENVIRONMENT, by Anthony C. Fascenda.

[0002] The following applications of common assignee may contain somecommon disclosure and may relate to the present invention:

[0003] U.S. patent application No. 09/195,483, entitled “Method andSystem for Providing Localized Information”, filed Nov. 17, 1998; and

[0004] U.S. patent application No. 09/195,482, entitled “Method AndSystem For Providing Formatted Information via a Two-way CommunicationsSystem”, filed Nov. 17, 1998, each of which is incorporated herein byreference in its entirety.

[0005] Additionally, the following applications of common assignee maycontain some common disclosure, and are believed to have an effectivefiling date identical with that of the present invention:

[0006] U.S. patent application No. 09/___,___, entitled “System andMethod for Providing Focused Information Based on Implicit and ExplicitInformation Derived From User Histories (Attorney Docket No.1753.0040000);

[0007] U.S. patent application No. 09/___,___, entitled “System, Methodand Apparatus for Automatically and Dynamically Updating Options,Features, and/or Services Available to a Client Device” (Attorney DocketNo. 1753.0050000);

[0008] U.S. patent application No. 09/___,___, entitled “System andMethod for Providing Information that is Responsive to a FreeformRequest” (Attorney Docket No. 1753.0060000);

[0009] U.S. patent application No. 09/___,___, entitled “System, Method,and Apparatus for Initial Configuration of a Client Device” (AttorneyDocket No. 1753.0080000);

[0010] U.S. patent application No. 09/___,___ entitled “System, Method,and Apparatus for Providing Value Added to Specific Users” (AttorneyDocket No. 1753.0090000); and

[0011] U.S. patent application No. 09/___,___, entitled “Method andApparatus for Providing Services to a User of a Client Device Configuredby Templates that Reference other Templates” (Attorney Docket No.1753.0100000), each of which is incorporated herein by reference in itsentirety.

BACKGROUND OF THE INVENTION

[0012] 1. Field of the Invention

[0013] The present invention relates generally to a system includingintercommunicating client and server applications, and moreparticularly, to such a system, a method and an apparatus formaintaining a database of past transactions in a client device.

[0014] 2. Related Art

[0015] A typical client-server environment includes a clientapplication, such as an Internet web-browser, and a server applicationrespectively executing on independent computer based platforms andcommunicating with one another. The client application submitsinformation requests to the server application in response to user inputat the client end. In response, the server transmits informationresponses to the client application. A user interacts with theclient-server environment using a Graphical User Interface (GUI) of theclient application.

[0016] Often, a user interacts with a browser such that the browsersubmits numerous consecutive information and/or branch requests over arelatively short period of time to retrieve information and/or navigatethrough a plurality of service provider sites (such as an Internet webpages). Using a conventional browser (such as Microsoft Explorer), eachof the consecutive requests can effectively cancel or negate a previousrequest, whereby one or more information and/or branch requests aredisadvantageously lost to the user. For example, When the user issues afirst requests for a first Internet file (e.g., by designating a UniformResource Locator (URL)) and then issues a second request for a differentInternet file prior to receiving a response to the first request, theconventional browser fails to display a response to the first requesteven when such a request is received. From the user's perspective, thesecond request negates the first request. This can also occur when theuser navigates through web sites. For example, if the user “clicks” on afirst hypertext link and then “clicks” on a second hypertext link priorto a jump to the first link, a jump to the first link fails to occur;thus, initiating the second link effectively negated initiating thefirst link.

[0017] There are many reasons that a user may make consecutivesubsequent requests after an initial request. The user may decide thateven though the initial request is important, subsequent requests aremore important. Alternatively, the user may grow impatient while waitingfor a response to the initial request. Whatever the reason, there is agood chance the first request is still of interest to the user.

[0018] Therefore, there is a need in a client application to receive andretain multiple server responses to consecutive client requestsregardless of the temporal relationship between the multiple responsesand consecutive requests. There is a related need in the client toprovide the user with a mechanism for retrieving the retained responseinformation and to display such information as necessary.

[0019] A large number of client or browser applications can operate in adistributed service environment. A distributed service environment isone in which the numerous client applications interact with one or moreserver applications, each of the server applications hosting a widevariety of data services provided by a variety of “private” and possiblypublic service providers. Wireless client devices including the abovementioned client applications can operate in such a distributed serviceenvironment.

[0020] Therefore, the above mentioned needs also pertain to wirelessdevices operating in the distributed environment.

SUMMARY OF THE INVENTION

[0021] The present invention is directed to a system, method andapparatus for utilizing transaction databases in a client-serverenvironment. In one embodiment, the present invention uses transactiondatabases to receive and retain multiple server responses to consecutiveclient requests regardless of the temporal relationship between themultiple responses and consecutive requests.

[0022] One embodiment of the present invention is a method used in aclient-server system including one or more servers and a client devicehaving a client transaction database and a user interface adapted toenable a user to enter requests. The method enables the client device toaccept multiple user requests, receive multiple server responses, anddisplay pages relating to the multiple server responses. The methodincludes the steps of receiving a first user request from the user viathe user interface and sending a first client request based on the firstuser request. The method also includes the steps of receiving a seconduser request from the user via the user interface, prior to receiving aresponse to the first client request, and sending a second clientrequest based on the second user request. When a server response to thefirst request is received, first information based on the serverresponse (to the first request) is stored in the client transactiondatabase. When a server response to the second request is received,second information based on the server response (to the second request)is stored in the client transaction database.

[0023] The method further includes the steps of retrieving one of thefirst information and the second information from the client transactiondatabase and displaying one of a first display page relating to thefirst information and a second display page relating to the secondinformation. Then, in response to a further user request from the uservia the user interface, the other one of the first information and thesecond information is retrieved from the client transaction database,and the other one of the first display page and the second display pageis displayed. More specifically, in one embodiment, if the serverresponse to the first request is received prior to the server responseto the second request, then the first information is retrieved from theclient transaction database, and the first display page is displayed.The user can then cause the second information to be retrieved from theclient transaction database and displayed by entering a further userrequest via the user interface. Alternatively, if the server response tothe second request is received prior to the server response to the firstrequest, then the second information is retrieved from the clienttransaction database, and the second display page is displayed. The usercan then cause the first information to be retrieved from the clienttransaction database and displayed by entering a further user requestvia the user interface. In another embodiment, the display page (i.e.,the second display page) relating to the last made client request (i.e.,the second client request) is displayed first, regardless of whichresponse was received first. In still another embodiment, a display pagerelating to the first made client request (i.e., the first clientrequest) is displayed first, regardless of which response was receivedfirst.

[0024] Another embodiment of the present invention is a method for usein a client-server system including one or more servers and a clientdevice having a client transaction database, a client template database,and a user interface adapted to enable a user to enter requests. Themethod includes the steps of receiving a user request from the user viathe user interface and retrieving a template from the client templatedatabase based on the user request. The template includes one or moredata fields. The method also includes the step of retrieving informationfrom the client transaction database based on the template, wherein theinformation relates to the one or more data fields of the template. Apage based on the template and the information relating to the one ormore data field is then displayed.

[0025] The method also includes the steps of receiving a refresh requestfrom the user via the user interface and sending a client request basedon the refresh request. Additionally, the method includes the steps ofreceiving a server response to the client request and storing furtherinformation in the client transaction database based on the serverresponse, wherein the further information relates to at least one of thedata fields. An updated page is then displayed based on the template andthe further information. The updated page can additionally be based onthe original information retrieved from the client transaction database.

[0026] In another embodiment, the present invention relates to a methodfor responding to a request from a client device. This method includesthe steps of receiving a client request from a client device, whereinthe client request includes a template identifier and a clientidentifier. The method also includes the step of retrieving a templateincluding one or more data fields from a server template database basedon the template identifier. The method further includes the steps ofcollecting first information (e.g., from an information store) relatingto the one or more data fields, determining a server response to therequest based on the first information, and sending the server responseto the client device.

[0027] According to another embodiment, the method also includes thesteps of retrieving second information from a server transactiondatabase based on the template identifier and the client identifier. Inthis embodiment the response to the request is determined based on thefirst information and the second information. For example, in thisembodiment the response can be based on differences between the firstinformation and the second information.

[0028] A further embodiment of the present invention is directed to aclient-server based system for providing a user with information inresponse to user requests. The system includes a server controller thatreceives information requests over a communication network and transmitsserver responses over the communication network in response to theinformation requests. A client device, coupled to the communicationnetwork, is adapted to receive user requests and then transmit theinformation requests based on the user requests. The client deviceincludes a display for displaying information, wherein the client deviceis adapted to receive, retain, and display multiple server responsescorresponding to consecutive information requests regardless of atemporal relationship between the multiple responses and the consecutiveinformation requests.

[0029] Advantages and additional features of the present invention, aswell as the structure and operation of various embodiments of thepresent invention, are described in detail below with reference to theaccompanying drawings.

BRIEF DESCRIPTION OF THE FIGURES

[0030] The features, objects, and advantages of the present inventionwill become more apparent from the detailed description set fourth belowwhen taken in conjunction with the drawings in which like referencecharacters identify corresponding elements throughout and wherein:

[0031]FIGS. 1A and 1B illustrate exemplary communications systems inwhich the present invention is useful;

[0032]FIG. 2A illustrates an exemplary two-way communications clientdevice for use with the present invention;

[0033]FIG. 2B is an illustration of a paging device manufactured byResearch In Motion (RIM), Limited, of Waterloo, Ontario, Canada.

[0034]FIG. 3 is an illustration of a logical architecture correspondingto the communication system of FIGS. 1A and 1B and the communicationsdevice of FIG. 2A.

[0035]FIG. 4A is an illustration at a high level of an embodiment of atemplate used in the logical architecture of FIG. 3.

[0036]FIG. 4B is a diagrammatic representation of an exemplary contentportion of a template used in the logical architecture of FIG. 3.

[0037]FIG. 4C is an illustration of a completed template or display pagecorresponding to the template of FIG. 4B.

[0038]FIG. 4D is an illustration of a list of exemplary definitions ordescriptors defining the template of FIG. 4B and the display page ofFIG. 4C.

[0039]FIG. 5 is an illustration of an exemplary hierarchy of displaypages.

[0040]FIG. 6A is an illustration of an exemplary user interfaceincluding linked pages defined by a hierarchy of templates, before atemplate update.

[0041]FIG. 6B is an illustration of the exemplary user interface of FIG.6B, after the template update.

[0042]FIG. 7B is an illustration of an exemplary information tablestored in a server transaction database used in the logical architectureof FIG. 3.

[0043]FIG. 7B is an illustration of an exemplary information tablestored in a server template database used in the logical architecture ofFIG. 3.

[0044]FIG. 8 is an illustration of an exemplary information table storedin a client transaction database of the client device of FIG. 2A.

[0045]FIG. 9A is an illustration of an exemplary information requestmessage transmitted by a client application used in the logicalarchitecture of FIG. 3.

[0046]FIG. 9B is an illustration of an exemplary information responsemessage transmitted by a server application used in the logicalarchitecture of FIG. 3.

[0047]FIG. 10 is a flow chart of an exemplary method of requestinginformation at a client in the logical architecture of FIG. 3, accordingto an embodiment of the present invention.

[0048]FIG. 11 is a flow chart of an exemplary method of responding to aninformation request of FIG. 10 at a server in the logical architectureof FIG. 3, according to an embodiment of the present invention.

[0049]FIG. 12 is a flow chart of exemplary method steps expanding on themethod of FIG. 11.

[0050]FIG. 13 is a illustration of exemplary display pages at a clientdevice before and after receipt of an information response at the clientdevice.

[0051]FIG. 14 is a flow chart of an exemplary method of receivingmultiple responses to multiple requests at a client device.

[0052]FIG. 15 is a flow chart of another exemplary method of receivingmultiple responses to multiple requests at a client device.

[0053]FIG. 16 is an exemplary computer system which may be used toperform the operations of the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0054] I. Introduction

[0055] The present invention relates to a method and system forautomatically initializing and configuring a client device (e.g., atwo-way paging device, a wireless phone, a personal data assistant, or adesk top computer). The present invention can be used in a two-waywireless communications system. Additionally, the present invention canbe used in various other types of communications system. For example,the present invention can be used with the Internet. In an embodimentwhere the present invention is used with the Internet, a client devicecan be, for example, a wireless device that wirelessly accesses theInternet (e.g., a PalmPilot® or a wireless phone) or a personal computerthat is wired to the Internet.

[0056] Preferred embodiments of the present invention are discussed indetail below. While specific steps, configurations and arrangements arediscussed, it should be understood that this is done for illustrativepurposes only.

[0057] II. Exemplary Communications Systems

[0058] An exemplary wireless communication system 100 in which thepresent invention is useful is illustrated in FIG. 1A. Communicationssystem 100 includes a plurality of cell sites 102 each having a coveragearea that is typically about 5 to 10 miles in diameter. A coverage areaof one cell site often overlaps a portion of a coverage area of anothercell site, which are illustrated for exemplary purposes by the hexagonalregions. Each cell site 102 includes an antenna 104 for transmitting andreceiving messages to and from two-way wireless client devices 108(e.g., a two-way pager, a wireless phone, a hand held computing device)that are located within a geographic coverage area of the cell site 102.Alternatively, separate antennas may be used for sending and receivingmessages, as would be apparent to a person skilled in the relevant art.Each cell 102 is coupled to communications network 110, which can be,for example, an X.25 packet switched network. Communications network 110may include, but is not limited to land based links such as fiber opticsor terrestrial microwave, and/or satellite based links, as would also beapparent to a person skilled in the relevant art.

[0059] Each cell site 102 is in communications with a message systemcenter (MSC) 120 that includes a subscriber database (also referred toas a user database) that maintains records of all subscribers (alsoreferred to as users) on the system, a unique identity sequence for thesubscriber's client device, and an indication of the cell site fromwhich the client device last sent a message (such as an acknowledgmentmessage or a request message). Preferably, communications between eachcell cite 102 and MSC 120 is accomplished through communications network110. Alternatively, each cell site 102 can have a dedicated link to MSC120.

[0060] Communications network 110 can be coupled to a public switchedtelephone network (PSTN) 112 so that a message can be sent to and fromclient device 108 via PSTN 112.

[0061] A message can also be sent from one client device 108 to anotherclient device 108 using communications system 100.

[0062] In one embodiment, communications system 100 is the Bell SouthWireless Data network (also known as the RAM Mobile Data network) or theARDIS network, which are both well known two-way nationwide wirelesspacket data networks.

[0063] A client device (e.g., two-way wireless communications device)108 typically identifies itself to MSC 120 by sending a registration oridentification signal. Such signals include a data field including atleast one unique identifier, such as a Mobile Identification Number(MIN) and/or Electronic Serial Number (ESN). A MIN, which can bereprogrammed, is analogous to a telephone number. An ESN is hard-codedand fixed such that it difficult, if not impossible to change. Somedevices include both a MIN and an ESN. The client device used in anembodiment of the present invention, discussed in more detail below,only includes one unique identifier, known as a Mobile Access Number(MAN), which is similar to an ESN in that it is hard-coded and fixed.The identification signal sent by client device 108 can include one ormore of the above discussed unique identifiers, or any other similarunique identifier. Such identification information can be periodicallytransmitted by client device 108 and/or included with other types ofmessages sent by client device 108. Such unique identifiers are alsosent with each request sent by a client device 108.

[0064] An optional function of MSC 120 is to determine whether theunique identifier of a client device is valid. A received uniqueidentifier, such as a unique identity sequence comprising a string ofdigitally represented alphanumeric characters, can be compared to amaintained database of unique identifiers (i.e., MINs, ESNs, MANs) todetect fraud.

[0065] MSC 120 can keep track of the approximate whereabouts of eachclient device 108 by keeping track of which cell site 102 a message,sent by a client device 108, originated. When MSC 120 is thus informedof the approximate whereabouts of each individual client device 108, itcan later limit the number of cell sites 102 from which it transmits amessage addressed to a particular client device 108. MSC 120 can evenlimit the transmission of a message to only one cell site 120 having acoverage area within which the particular client device 108 is believedto be located. The coverage area of a limited number of cell cites 102(possibly only a single cell site or a last know site and its adjacentsites) shall be referred to as a targeted coverage area. Thus, thetargeted area can be the area covered by a single cell site or aslightly larger area that is also covered by a few adjacent cell sites.This limited or “targetted” transmission is much more efficient thanbroadcast-type transmission where a message is transmitted from everycell site, regardless of a location of a client device 108 to which themessage is addressed.

[0066] Servers 114 (typically controlled by a service provider) aresupported by communications system 100. That is, communications system100 provides for message delivery between a server 114 and one or moreclient devices 108. Servers 114 can communicate directly with clientdevices 108 or indirectly with client devices 108 via communicationsnetwork 110. Alternatively, servers 114 can communicate withcommunications network 110 through PSTN 112. In one embodiment, a server114 provides information to a client device 108 upon receiving a requestfrom the client device 108. Additionally, servers 114 can initiate thesending of information (e.g., unsolicited information) to a clientdevice 108. This can be done periodically or upon a triggering event.Additional details about the types of services and the informationprovided by services providers 114 are discussed below.

[0067] The present invention is also useful in data networks such as alocal area network (LAN), a home area network (HAN), and a wide areanetwork (WAN). For example, the present invention is useful in thelargest present day WAN known as the Internet, and in smaller WANs. TheInternet is a world-wide set of interconnected computer networks thatcan be used to access a growing amount and variety of informationelectronically. One method of accessing information on the Internet isknown as the World Wide Web (www, or the “web”). The web is adistributed, hypermedia system, and functions as a client-server basedinformation presentation system. Information that is intended to beaccessible over the web is generally stored in the form of “pages” onservers (e.g., general purpose computers). Users can access a web siteusing general-purpose computers, wireless hand held computing devices,Internet capable wireless phones (e.g., a Wireless Application Protocol(WAP) Internet enabled telephone), and the like, referred to as clients,by specifying the uniform resource locator (URL) of the site. FIG. 1B isa network block diagram showing a plurality of clients 108 and servers114 connected to the Internet 118.

[0068] When a client sends a request to a server the request specifies,among other things, a destination address (e.g., a URL) and a sourceaddress that can be used to identify a user. A part of the URL known asthe Domain Name is passed to a domain server (DNS) to be translated to anetwork address. The network address specifies the Internet protocol(IP) address of the intended server. The client request is passed to theserver having the network address.

[0069] Servers 114 maintain or otherwise have access to local or remotedatabases that store and/or provide various types of data. For example,referring to FIG. 1A, remote databases 130 are maintained by datasources 132. FIG. 1A also shows a local database 116 that is maintainedby server 114. Servers 114 can communicate with data sources 132 throughdedicated links or through communications network 110, for example. Thetype and number of databases, and the form of communication of databetween the servers 114 and the databases, is implementation specific.

[0070] The invention covers the ability of a server system to provideinformation to client devices via a wireless communications system,which typically has a plurality of cell sites that are coupled to acommunications network. The invention also covers the ability of aserver system to provide information to client devices via a wiredcommunications system, or via a communications system consisting of acombination of wired and wireless links. The functions performed by theserver system can comprise software running on one or more generalpurpose computers or on telecommunications-specific hardware.Alternatively, the combination of the software and hardware toaccomplish the functions of the present invention can be conceptualizedas a union of server controllers that each perform a discrete task, suchas: sending a request from a client device in response to user input atthe client device; receiving the request at a server over thecommunications network; identifying a user based on the request;determining a response based on the request; sending the response to theclient device of the user, or the like. One, two, or more of thesediscrete tasks can be performed by a single server controller. That is,the tasks performed by a first server controller and a second servercontroller can be performed by a single server controller and still bewithin the spirit and scope of the present invention. Alternatively, thediscrete tasks can be performed by any number of server controllers. Afurther description of exemplary software and hardware controllers isprovided below.

[0071] III. Exemplary Client Devices

[0072] An exemplary two-way wireless communications client device 108 isillustrated in FIG. 2A. Client device 108 includes an antenna 202, atransmitter 204, a receiver 206, a microprocessor 208, a display 210 anda keypad 212. Transmitter 204 is controlled by microprocessor 208 andtransmits messages using antenna 202. Messages received from atransmitter of the communications system 100 are received throughantenna 202 or a separate antenna (not shown). The received messages arerouted from antenna 202 to receiver 206 and processed by microprocessor208, for example. Display 210 can be a liquid crystal display and isused for displaying, to a user (also referred to as subscriber) ofclient device 108, information received via communications system 100.Display 210 can also display lists and/or menus from which a subscribercan make selections and perform various functions. Other methods ofpresenting the received information, such as aurally through a speakeror through another type of display, are not precluded. Keypad 212 caninclude as few as one button, but may also include an entirealphanumeric keypad, touch pad, or can be integrated with a display,such as a touch-screen display. Client device 108 also includes a memory214 that can store software and/or data. Microprocessor 208 can write toand read from memory 214.

[0073] In one embodiment, client device 108 is an Inter@ctive™ Pager 950manufactured by Research In Motion (RIM), Limited, of Waterloo, Ontario,Canada. The RIM Inter@ctive pager (RIM pager) is a commerciallyavailable device that provides for two-way wireless communications. TheRIM pager, shown in FIG. 2B, includes a 31-key keypad 212, roller wheel214 that is similar to a mouse, and screen display 210 with 8 lines oftext by approximately 28 characters per line. The RIM page also includesa built-in internal radio modem for two-way wireless communications overa cellular network such as the BellSouth network. In another embodiment,client device 108 is a Palm Pilot™ computing device, manufacture by 3ComCorporation, of Santa Clara, Calif. Client device 108 can also be awireless communication device such as, but not limited to, a wirelesstelephone, a data transceiver, and a paging receiver. Client device 108can be fixed, portable, or mobile, such as a mobile telephone. Of coursethe use of other two-way communications devices is within the spirit andscope of the present invention.

[0074] For some embodiments, client device 108 can be a personalcomputer that, for example, communicates with servers 114 via a networksuch as the Internet 118. Client device 108 can also be a personalcomputing device that wirelessly accesses the Internet. Those ofordinary skill in the art will envision other implementations of clientdevice 108 and appreciate that they are encompassed by the presentinvention.

[0075] IV. Embodiments of the Invention

[0076] A.1. Client-Server Architecture

[0077] The system described in connection with FIGS. 1A, 1B, 2A and 2Bprovides a plurality of ever expanding information services to a user ofclient device 108. In an example application, a user requests stockprices from server 114, using client device 108. In response, server 114transmits the requested stock prices to client device 108. Client device108 then displays the stock prices to the user on display 210.

[0078] A logical architecture 300 of an embodiment of the presentinvention is depicted in FIG. 3. Logical architecture 300 corresponds tothe system of FIGS. 1A and 1B. Logical architecture 300 includes aclient application 304 residing in client device 108, and a serverapplication 306 residing in server 114. Client application 304 (alsoreferred to as client 304) and server application 306 are, for example,computer programs respectively supported by computer controllers andmemories of client device 108 and server 114.

[0079] For example, server 114 (also referred to as server controller114) comprises the hardware and/or software required to accomplishspecific functions of the present invention. Server 114 can beconceptualized as a union of servers that each perform a discrete task.One, two, or more of these discrete tasks can be performed by a singleserver 114. That is, the tasks performed by a first server 114 and asecond server 114 can be performed by a single server 114 and still bewithin the spirit and scope of the present invention. Alternatively, thediscrete tasks can be performed by any number of servers 114. That is,the task performed by a single server 114 can be performed by aplurality of servers.

[0080] Similarly, client 304 (also referred to as client controller 304)comprises the hardware and/or software required to accomplish specificfunctions of the present invention. Client 304 can be conceptualized asa union of clients that each perform a discrete task. One, two, or moreof these discrete tasks can be performed by a single client 304. Thatis, the tasks performed by a first client 304 and a second client 304can be performed by a single client 304 and still be within the spiritand scope of the present invention. Alternatively, the discrete taskscan be performed by any number of clients 304. That is, the taskperformed by a single client 304 can be performed by a plurality ofclients.

[0081] A.2. Client Overview

[0082] Client 304 includes a user interface 308 at client device 108 forallowing a user to interact with one or more information servicessupported by the system of the present invention. User interface 308displays formatted information pages on display 210 and permits the userto navigate between such display pages. User interface 308 also providesthe user with a mechanism to enter requests and/or commands using, forexample, keypad 212 (see FIG. 2B).

[0083] Client 304 interfaces with a client template database 310 and anclient transaction database 312 stored in a memory of client device 108.Client template database 310 includes a plurality of individualtemplates 314, typically associated with one or more informationservices provided by the system of the present invention. In the presentinvention, client 304 and user interface 308 are defined and configured,and can be updated, in accordance with individual templates 314. As willbe further described below, each template 314 is typically associatedwith a display page, and uniquely defines the type of information and alayout or format of information presented to the user on the displaypage. Each template 314 can also define a set of available actions auser can take when viewing an associated display page, thereby allowing,for example, the user to request information from the display page andto navigate between display pages.

[0084] Client device 108 can transmit information request message 316 toserver 114 when appropriate. Client device 108 also receives responsemessage 318 and can stores information in the response message in clienttransaction database 312, so as to preserve the information for laterretrieval. Also, user interface 308 can display requested information tothe user.

[0085] A.3. Server and Server Database Overview

[0086] Server 114 can communicate with a plurality of client devices108. Server 114 distributes requested information to client devices 108,and maintains configuration control over the client devices. To performsuch tasks, server 114 interfaces with a plurality of informationstores, including a server template database 330, a server transactiondatabase 332, and an exemplary services information store 334.

[0087] Services information store 334 includes real-time data from datasources 132 (not shown in FIG. 3; see FIG. 1A). Services informationstore 334 can include data relating to finance and stocks, sports,weather, airline schedules, and the like. Services information store 334can be a local database 116 or a remote database 130. When server 114receives information request 316 from client device 108, server 114retrieves the requested information from information store 334, andtransmits the information to client device 108 using informationresponse message 318.

[0088] Server transaction database 332 includes tables mappingindividual client device unique identifiers (for example, MANs, MINs, orESNs) to authorized services and associated templates. Server 114 usessuch mapping tables to validate/authorize client requests. Server 114maintains transaction event data for past and on-going transactionsbetween server 114 and clients 304 in server transaction database 332.Such data is used to track and control the various transactions in thesystem of the present invention and to build transaction history tablesfor each of the client devices 108.

[0089] Server template database 330 includes the latest or most currentversions of all of the available templates in the system of the presentinvention. Server template database 330 also includes tables mappingindividual client device unique identifiers to the most current templateversions authorized for client devices 108 associated with the uniqueidentifiers. As new services, features and options are added to thesystem of the present invention, new templates are stored in servertemplate database 330 and/or existing stored templates are updated, toreflect the additions. Therefore, at any given time, it is possible aclient device 108 includes an old version of a template, that is, anout-of-date template that requires updating. When server 114 receivesinformation request message 316 from client device 108, server 114determines whether the template (at client device 108) associated withthe request message is the most current template (for example, anupdated template). If the template is an old version, server 114retrieves the most current template from server template database 330,and then transmits an appropriate template update, along with therequested information, to client device 108 using response message 318.In this manner, server 114 distributes the most current templateversions to client devices 108 on a per access and an as needed basis.Thus, server 114 efficiently distributes template updates to clientdevices 108 to render new service features and options available to theusers, and maintain configuration control over the clients. Furtherdetails regarding initially configuring and reconfiguring/updating aclient device with templates are respectively provided in: U.S. patentapplication No. 09/___,___, entitled “System, Method and Apparatus forInitial Configuration of a Client Device” (Attorney Docket No.1753.0080000); and U.S. patent application No. 09/___,___, entitled“System, Method and Apparatus for Automatically and Dynamically UpdatingOptions, Features, and/or Services Available to a Client Device”(Attorney Docket No. 1753.0050000), each of which was whollyincorporated by reference above.

[0090] B.1. Template Overview

[0091] In the present invention, the templates stored in client device108 define a configuration of the client device. The configuration ofclient device 108 can determine the data services a user can accessusing client device 108, including various data service options and/orfeatures. Also, the configuration can determine the way in which clientdevice 108 interacts with the user to provide data services to the user.This can include, but is not limited to, the types of pages displayed tothe user, the appearance of the display pages, the types and/orarrangements of information displayed on the pages, the navigablehierarchy of display pages presented to the user, the types and/oroperations of actions the user can initiate when the user is presentedwith the display pages, the types of requests a user can enter viaclient device 108 and/or the content of client requests resulting fromsuch entered user requests. The configuration of client device 108 canalso determine how client device 108 responds to various user requests.

[0092]FIG. 4A is an illustration at a high level of an embodiment oftemplate 314. Template 314 includes a template header 400 having atemplate identifier 400 a, a template version identifier or number 400b, and an optional template title 400 c. Template 314 also includes acontent portion 402 and an action portion 404. Content portion 402includes definitions or descriptors (such as textual, symbolic and/orgraphical descriptors) that define a layout and appearance of anassociated display page on display 210. In other words, content portion402 specifies an arrangement of information fields on the associateddisplay page.

[0093] On the other hand, action portion 404 includes definitions (suchas textual, symbolic, and/or graphical descriptors) specifying a set ofactions a user can take with respect to the associated display page. Forinstance, action portion 404 can include: menu action definitions 404 a,such as menu pull-down actions and scroll-wheel shortcuts; keyboardaction definitions 404 b, such as keyboard shortcuts (e.g., press “W”for weather service requests); branching action definitions 404 c,allowing the user to branch from the current template and display pageto a next template and display page linked with the current template;and external references 404 d, such as URLs. Such actions are availableto the user at the display page associated with template 314.

[0094] Content portion 402 is now further described. Content portion 402tropically includes text (for example, header or title information, andfield labels) and variable descriptors (for example, stock quoteinformation). Content portion 402 defines a format for the variableinformation and text within the display page. Content portion 402 canalso include references to tables and graphical entities stored in theclient device memory.

[0095] A diagrammatic representation of the content portion of anexemplary template 406 is depicted in FIG. 4B. The content portion oftemplate 406 includes the following definitions:

[0096] a title 410 for displaying the text “PRECIOUS METALS”;

[0097] a field 412 for displaying current time;

[0098] a plurality of information field identifiers or labels 414arranged in a column; and

[0099] a first set of information fields 416 for displaying variableinformation (such as stock prices) and a second set of variable fields418 for displaying further variable information corresponding to theinformation field identifiers.

[0100] Template 406 is incomplete because none of the information fieldsare populated with the specified variable information. When clientdevice 108 receives requested information corresponding to template 406,client device 108 populates an instance of template 406 with therequested information, thereby, creating a completed template. Userinterface 308 displays the completed template to the user as a displaypage. A display page/completed template 420 corresponding to template406, is depicted in FIG. 4C. In display page 420, field 412, fields 416,and fields 418 are respectively populated with current time, hi/lowstock prices, and stock price deviations.

[0101] In the present invention, each template can incorporate a uniqueset of actions available to the user when the template is displayed as adisplay page, as mentioned above. In other words, actions can vary fromtemplate to template and page to page in the present invention. Templateactions are further described below.

[0102]FIG. 4D is an illustration of a list of exemplary definitions ordescriptors that define template 406 (FIG. 4B), and thus display page420 (FIG. 4C), as the template can be stored in either client or servertemplate databases 310 or 330. The illustrated list of definitionscorrespond to a data service for precious metal prices. In header 400,“NT”, “VERSION”, and “TI” respectively specify the template name“temp1”, version “1.1”, and title “PRECIOUS METALS”.

[0103] Content portion 402 (corresponding to labels 414, and fields 416and 418 of FIG. 4B) includes a plurality of content definitions 436 formetal pricing information. A spaced pair of percent symbols (%) delimitseach information field. For example, the definition “<SILVER%0:11%%1:6%” causes two variable fields of information to be displayedafter the text “SILVER” on the display of client device 108. Actionportion 404 includes exemplary action definitions 442 and 444. Theactions defined by action definitions 442 and 444 are available to theuser when the display page associated with the template (for example,display page 420 of FIG. 4C) is being displayed.

[0104] Action definition 442 defines a menu choice “refresh” in a listof displayed menu items. When “refresh” is selected in one embodiment,client device 108 retrieves the most recently received informationrelating to template temp, from client transaction database 319, andrefreshes the display with the retrieved data. In another embodiment,selecting “refresh” causes client device 108 to first update the displaywith information retrieved form client transaction database 312 as justdescribed, and then transmit an information request for new informationto refresh the displayed information. In still another embodiment, thefirst step is omitted from the just described two-step embodiment.

[0105] Action definition 444 defines a shortcut key as “SP”, the “spacebar” key (also referred to as the “symbol key”) on keypad 212, whichwhen pressed, causes a branch to a predetermined home template or pagecalled temp_(home). Client device 108 then displays the home pageassociated with temp_(home).

[0106] The templates of the present invention provide a powerful andconvenient mechanism for configuring, reconfiguring, and updating clientdevice 108 and user interface 308. As the system of the presentinvention adds new services and/or expands existing service options andfeatures, correspondingly new and/or updated templates are automaticallydistributed to and stored in client devices 108. The new and/or updatedtemplates correspondingly expand the service features and optionsavailable to the user so that the user can access the new and expandedservices.

[0107] In the present invention, templates 314 stored in template database 310, and the actions specified in each of the templates, define aninterconnected hierarchy of user navigable display pages at clientdevice 108. FIG. 5 is an illustration of an exemplary hierarchy ofdisplay pages 502. In the example hierarchy, user interface 308 displaysa home or welcome page 504 to the user when client device 108 is firstpowered-on. Home page 504 is a service starting page. Using actions,represented by connectors 506, defined for the home page by theassociated home page template, the user can branch to a quote requestpage 508, a portfolio page 510, an informative “about” page 512, and aset-up page 514. The user can navigate between the aforementioned pagesand a quote display page 516, a chart page 518, a user alert page 520,user page 522 and an add symbol page 524.

[0108] Templates and the actions defined thereby advantageously providea convenient mechanism for altering user interface 308 and associatedapplications in accordance with expanding services, without changing theunderlying user interface or client computer programs. An exemplaryupdate to user interface 308 is now described with reference to FIGS. 6Aand 6B. With reference to FIG. 6A, a user interface 602 is defined by aquote entry page 604, a quote display page 606, a portfolio page 608 andan FxAlert page 610 (e.g., for current precious metal prices) linkedtogether by actions 612.

[0109] With reference to FIG. 6B, to add a new service or usercapability, for example, the ability of obtaining the latest news for aparticular stock, a new template, defining a new page 614 called “EquityNews,” can be composed for accessing such latest new stock information.New page/template 614 can be linked to and thus only accessible fromquote display page 606, assuming new page 614 should be accessible onlyafter a particular stock quote is displayed on quote display page 606.To effect such a link, an action 616 can be added to quote display page(template) 606. For example, the added action 616 can define a branchkey N, which when pressed, causes a branch from quote display page 606to Equity News page 614 in accordance with the above assumption.

[0110] C.1. Server Transaction Database

[0111] As described above in connection with FIG. 3, server 114 accessesserver transaction database 330 to manage transactions with numerousclients 304. FIG. 7A is an illustration of an exemplary transactiontable 700 stored in server transaction database 330. Exemplary table 700includes a client identification column 702, a template identifiercolumn 703, an optional template title column 704, a template versioncolumn 706, an index column 708, a date column 710, a time column 712,and a parameters column 714. Each row of client identification column702 includes a unique identifier of a client device 108 (e.g., MAN, ESN,MIN). Each row of template identifier column 703 includes a uniqueidentifier of a template (e.g., temp₁, temp₂, temp₃). Each row oftemplate version column 706 specifies the version of the template in thecorresponding row of column 703. Accordingly, entries in templateversion column 706 specify the version of a template (i.e., identifiedin column 703) that a specific client (i.e., identified in column 702)currently has stored in its client template database 310. Each row ofindex column 708 identifies the data type that is used to populate thecorresponding template in column 703. The data included in parameterscolumn 714 is the data that was sent to the corresponding client (incolumn 702) the last time server 114 provided that client with the datatype of column 708. Each row of date column 710 and time column 712specifies when server 114 last provided the client device of column 702with the data included in parameters column 714.

[0112] C.2. Server Template Database

[0113] As described above in connection with FIG. 3, server 114 accessesserver template database 330 to maintain configuration control overclient devices 108. FIG. 7B is an illustration of an exemplary table 750stored in server template database 330. Table 750 includes a column 754listing the identifiers of current templates stored in database 330, acolumn 756 listing template version numbers for the identifiedtemplates, and a column 758 listing the definitions of the identifiedtemplates. Each row 760 corresponds to an identified template, forexample, template temp₁. In another embodiment, version column 756 isdeleted since a template version can be determined from a templateheader included in the template definition.

[0114] C.3. Client Transaction Database

[0115]FIG. 8 is an illustration of an exemplary table 800 stored inclient transaction database 312 of client device 108. Table 800 isessentially the same as server transaction table 700 of FIG. 7A anddiscussed above, except that table 800 does not include a clientidentifier column (e.g., column 702). This is because client transactiondatabase 312, and thus table 800, are specific to only one client device108.

[0116] D.1. Information Request and Response Messages

[0117]FIG. 9A is an illustration of an exemplary information requestmessage 900 (corresponding to information request message 316 of FIG. 3)transmitted by client device 108. The information request message (e.g.,900) is also referred to as a client request, since it is initiated byclient device 108. The fields of message 900 are arranged in accordancewith an exemplary message format, and it is to be understood thatmessage 900 can be arranged in other formats. Message 900 includes aclient device identifier (such as a MAN) 902, transaction information904 used by client device 108 and server 114 to track the currenttransaction, a template identifier or name 906, a template versionidentifier 908 identifying the version of the named template stored intemplate database 310, and a specific information request 910.

[0118] In one embodiment, transaction information 904 includes atransaction number 912 and a client state 914. Client 108 tracks eachrequest using transaction number 912, which only client 108 canincrement. Client state number 914 specifies the last successfullyreceived update for the template identified by template identifier 906.In one embodiment, client 108 can store transaction number 912 andclient state number 914 in, and retrieve transaction number 912 andclient state number 914 from, additional columns (not shown) of servertransaction database table 700. Use of transaction number 912 and clientstate number 914 are discussed below.

[0119] Client device 108 increments transaction number 912 every time itsends a client request to server 114. Only client device 108 canincrement transaction number 912. However, client device 108 neverincrements client state number 914. Rather, server 114 increments clientstate number 914 when it sends a server response to client device 108.

[0120] If client device 108 issues multiple client requests (e.g.,multiple requests for stock quotes AAPL, MSFT, GE, INTC, etc.), eachrequest (e.g., 900) includes a transaction number 914. Server 114responds to each request individually and echoes back the appropriatetransaction number 914 in each server response (e.g., 920). Each serverresponse received by client device 108 is stored in client transactiondatabase 310. Additionally, in one embodiment, a display page associatedwith the server response to the last (i.e., in time) client request isdisplayed to the user.

[0121] Client state 914 is used by server 114 to determine the lastsuccessfully received (by client device 108) server response to aparticular client request. This is important because client device 108may fail to receive a server response sent by server 114. Thus, server114 should save the last sent server response in, for example, asuspense file. Only when sever 114 receives a new client request (i.e.,for the same information) with the same state number does it write thedata of the last server response (which was stored in the suspense file)to server transaction database 332. For example, server 114 may receivea “state 6” client request and return a new “state 7” server response toclient device 108. If client device 108 never receives the serverresponse with “state 7”, then the next time client device 108 makes thesame client request it will again be a “state 6” client request. In thismanner, server 114 will know that client device 108 never received the“state 7” server response. This enables server 114 to use old “state 6”data (rather than the data last sent to client device 108, that isassociated with “state 7”) when performing a comparison of old data tonew data to thereby produce a server response.

[0122] In one embodiment, either client device 108 or server 114 canreset client state 914 to zero when a server response includes a fullupdate (as opposed to a server response that only includes changes).

[0123]FIG. 9B is an illustration of an exemplary information responsemessage 920 (corresponding to information response message 318)transmitted by server 114. The information response message (e.g., 920)is also referred to as a server response, since it is initiated byserver 114. Message 920 (also referred to as server response 920)includes requested information 922, provided in response to specificinformation request 910 of information request message 900.

[0124] Another exemplary information response message (not shown)includes template update information to update a template in clientdevice 108.

[0125] E.1. Requesting Information—Client

[0126] Exemplary methods of requesting and responding to informationrequests are now described. FIG. 10 represents a series of method steps1000 performed by client device 108 in response to a request forinformation from a user. The method begins at a step 1002 when the userof client device 108 issues a request for information from a displayedpage, via user interface 308.

[0127] At a next step 1004, client device 108 queries client templatedatabase 310 to determine whether an appropriate template 314 associatedwith the request is locally available. If client device 108 determinesthat the appropriate template is not locally available (i.e., if theanswer to step 1004 is NO). then, at a step 1005, client device 108sends a get_template command to server 114. Further details of theget_template command and step 1005 are discussed in U.S. patentapplication No. (09/___,___), entitled “System, Method and Apparatus forAutomatically and Dynamically Updating Options, Features, and/orServices Available to a Client Device” (Attorney Docket No.1753.0050000), incorporated herein by reference above. If theappropriate template is locally available, then at a step 1006, clientdevice 108 retrieves the appropriate template from client templatedatabase 310.

[0128] If the appropriate template is locally available, then at a step1006, the appropriate template is retrieved from client templatedatabase 310. At a next step 1008, there is a determination whether dataassociated with the appropriate template is available from clienttransaction database 312. If the answer to step 1008 is YES, then flowcontinues to a step 1010, where the template is populated with data fromclient transaction database 312. The data retrieved from clienttransaction database 312 is the data last received from server 114 topopulate the retrieved template (e.g., data from an earliertransaction). If the answer to step 1008 is NO, then flow jumps directlyto a step 1016, which is discussed below.

[0129] In one embodiment, after step 1010, in a step 1012, the populatedtemplate is displayed (i.e., an associated page) on display 210 ofclient device 108. Preferably a status (e.g., date and time) of thedisplayed information is also displayed. Accordingly, the appropriatetemplate preferably includes a status field that can be populated withstatus data (e.g., date and time). The information displayed to the usercan be stale, for example, the data can be days, hours, or seconds old,depending on when client 108 last received the information to populatethe appropriate template.

[0130] If the user directs client device 108 to do something other thanrefresh the information (i.e., if the answer to step 1014 is NO), thenclient device 108 functions accordingly. For example, the user mayinitiate a branch action that causes client device 108 to display adifferent page.

[0131] At a decision step 1014, if the user requests that theinformation (i.e., that populates the template) be refreshed with the“new” information (i.e., if the answer to step 1014 is YES), clientdevice 108 composes and transmits an appropriate information requestmessage to server 114, at a step 1016. In one embodiment, a user canrequest refreshed information by pressing a predefined action key, suchas the “enter” key or “space bar” key. An example request message 900 isdescribed above in connection with FIG. 9A.

[0132] In an alternative embodiment, flow jumps directly from step 1008to step 1016, such that client device 108 sends a request message toserver 114 after client device 108 retrieves data from clienttransaction database 312. In another embodiment, flow jumps directlyfrom step 1006 to step 1016, such that client device 108 sends a requestmessage to server 114 after client 204 retrieves the appropriatetemplate from client template database 310.

[0133] E.2. Responding to an Information Request—Server

[0134]FIG. 11 represents a series of method steps 1100 performed byserver 114 in response to a request for information from client device108. The process begins at a step 1102 when server 114 receives arequest message (e.g., request 900) sent from client device 108. At astep 1104, server 114 identifies client device 108. This is accomplishedusing a unique identifier (e.g. 902) included in the request. In thisexample, server 114 recognizes that the client device 108 that sent therequest message has a template for displaying the requested information,because the request (e.g., 900) includes a template identifier (e.g.,906). At this point, server 114 can also determine whether the specificinformation request is authorized for the requesting MAN.

[0135] At a next step 1106, server 114 retrieves the latest (i.e., mostcurrent or up-to-date) version of the identified template (e.g., thetemplate identified by template identifier 906) from server templatedatabase 330. At a step 1108, server 114 retrieves/derives the requestedinformation required to populate the data fields of the template thatwas retrieved at step 1106. For example, at step 1108, server 114retrieves the requested information from information store 334 inaccordance with the most current template definition.

[0136] In a step 1110, server 114 determines whether client 108 has themost current template. To make this determination, server 114 comparestemplate version identifier 906 of the template named in informationrequest message 900 against the version identifier for the same namedtemplate just retrieved from server template database 330 (e.g., incolumn 756 of table 750 of FIG. 7B) at step 1106.

[0137] If server 114 determines that the identified client device 108does not have the latest version of the appropriate template (i.e., theanswer to step 1110 is NO), then client device 108 has an “old” templatethat requires updating with a “new” template, namely, the template justretrieved from server template database 330. Accordingly, at a step1112, server 114 composes an information response message including:

[0138] a) information retrieved from information store 334 at step 1108;and

[0139] b) template update information from the “new” template.

[0140] Further details regarding step 1112 and template updating arediscussed in U.S. patent application No. (09/___,___), entitled “System,Method and Apparatus for Automatically and Dynamically Updating Options,Features, and/or Services Available to a Client Device” (Attorney DocketNo. 1753.0050000), incorporated herein by reference above.

[0141] On the other hand, if server 114 determines at step 1110 thatclient device 108 does not require a template update (i.e., the answerto step 1110 is YES), then server 114 composes an information responsemessage using only the information retrieved from information store 334(e.g., message 920), since a template update is unnecessary. At a nextstep 1116, server 114 transmits the composed information responsemessage to client 108. For example, server 114 transmits responsemessage 920 or 930 composed respectively at steps 1114 or 1112.

[0142] An advantage of the present invention is that if the clientdevice 108 (to which the response message is being sent) has the mostcurrent template, then the composed and transmitted response message(e.g., message 920, composed in step 1114) only includes the informationrequired to populate and thus refresh a template. This significantlyreduces the size of the response message (or messages) that istransmitted from server 114 to client device 108. Minimizing the size ofresponse messages reduces the cost and/or response time (also referredto as latency) for providing information services. For example, where acommunications system provider charges on a volume basis, the less datatransmitted means less cost to the user. Additionally, since latency istypically proportional to the amount of data being transmitted, the lessdata transmitted means lower latency. A further advantage is thereduction in a system transmission bandwidth, such that more users canbe supported by the services of the system.

[0143] In one embodiment, the message that server 114 composes at step1114 (and sends at step 1116) includes all the data necessary topopulate a template.

[0144] In another embodiment, the message that server 114 composes atstep 1114 (and sends at step 1116) includes the information that haschanged since client device 108 last successfully received a serverresponse (i.e., to populate the particular template) from server 114,but does not include the information that has not changed since server114 last sent a successfully received server response message.Accordingly, an advantage of this embodiment is that the size of theresponse message (or messages) is further reduced.

[0145] Further details of step 1114, according to an embodiment of thepresent invention, are discussed with reference to FIG. 12. In a step1202, server 114 queries server transaction database 332 to determinethe information, for the particular template, that client device 108 hasstored in client transaction database 312. For example, server 114searches table 700, of FIG. 7A, based on client identifier 902 andtemplate identifier 906 to determine what information was last sent toclient device 108 for the identified template.

[0146] In a step 1204, server 114 then compares the information in eachdata field (i.e., the information retrieved in step 1108 of FIG. 11)against the record of what was last successfully received by clientdevice 108 (i.e.. determined in step 1202), to thereby determine theinformation that has changed (also referred to as the changed fields).

[0147] Steps 1202 and 1204 can be illustrated with reference to FIG. 13.An “old” page 1302 represents the information (populating a preciousmetals template) that client device 108 has stored in client transactiondatabase 312 (i.e., at step 1202). Server 114 determines that clientdevice 108 has such an “old”page of information using server transactiondatabase 332. A “new” page 1304 represents up-to-date or currentinformation (populating the same precious metals template) retrieved byserver 114 at step 1108. A change definition 1306 represents a change ininformation between old page 1302 and new page 1304. Server 114determines change definition 1306 by comparing the information in oldpage 1302 to the information in new page 1304. Server 114 compresseschange definition 1306 using a data compression technique to produce acompressed change definition 1308, thereby further reducing the size ofthe response message.

[0148] In one embodiment, at step 1202, server 114 queries servertransaction database 332, based also on client state number 912 (i.e.,in addition to client identifier 902 and template identifier 906) toensure that server 114 actually compares the up-to-date information(i.e., the information retrieved in step 1108) against what clientdevice 108 actually has stored in its client transaction database 312.If this query is not based also on client state number 912, there is apossibility that server 114 will perform the comparison usinginformation that was last sent to client device 108, but never receivedby client device 108.

[0149] Referring again to FIG. 11, after server 114 transmits theinformation response message (e.g., 900) in step 1116, client device 108receives the response message. Client device 108 then updates clienttransaction database 312 with information from the response message. Forexample, client device 108 replaces a row of client transaction table800 containing “old” information with “new” information received fromthe response message. In another example, if the response message onlyincludes a change definition, then client device 108 only replaces thosecolumns of a row of transaction table 800 specified in the changedefinition. Client device 108 can then refresh the current display pageby retrieving the “new” information from client transaction database312. For example, client device 108 can use the “new” information topopulate the data field(s) of the template retrieved at step 1006.

[0150] An advantage of the present invention is realized when clientdevice 108 sends one or more additional request messages to server 114prior to receiving a response message(s) to one or more previousrequests (i.e.. back from server 114). This advantage is also presentwhen client device 108 sends the first request message to a first server114 and a second request message to a second (i.e., different) server114. A series of exemplary method steps 1400 performed at client device108 are now described to illustrate this advantage.

[0151] E.3. Multiple Consecutive Client Requests and Server Responses

[0152] Assume client device 108 sends a first request message to server114 and then a second request message to server 114 prior to receiving aresponse message to the first request message. Referring to FIG. 14, atan initial step 1402, client device 108 receives a response to the firstrequest. In a step 1404, client device 108 updates a row of clienttransaction database table 800 based on the response to the firstrequest. For example, client device 108 updates a first row oftransaction database table 800 using first information that is based onthe response to the first request. Client device 108 uses the templateidentifier (e.g., 906) in the response message (e.g., 920) to determinewhich row to update. Next, in a step 1406, client device 108 displays afirst page using the first information in the updated first row ofclient transaction database table 800.

[0153] Next, in a step 1408, client device 108 receives a response tothe second request. In a step 1410, client device 108 updates a row ofclient transaction database table 800 based on the response to thesecond request. For example, client device 108 updates a second row oftransaction database table 800 using second information that is based onthe response to the second request. Again, client device 108 uses thetemplate identifier (e.g., 906) in the second response message (e.g.,920) to determine which row to update. At a step 1412, client device 108can then display a second page using the second information in theupdated second row of client transaction database table 800, in responseto a request by the user via the user interface 312 (e.g., in responseto the pressing of a back arrow key). Accordingly, the use of clienttransaction database 312 enables client device 108 to send one or moreadditional request messages to server 114 (or multiple servers 114),prior to receiving response message(s) to one or more previous requests(i.e., back from server 114), without the additional request(s) negatingthe previous request(s).

[0154] In one embodiment, the display page relating to the last madeclient request is displayed first, regardless of which server responseis first received at client device 108. In still another embodiment, adisplay page relating to the first made client request is displayedfirst, regardless of which server response is first received at clientdevice 108.

[0155] The present invention can be used to improve many systems andapplications. For example, when the present invention is used in abrowser application, and a user (i.e., of the browser) submits numerousconsecutive information and/or branch requests over a relatively shortperiod of time, the transaction database of the present invention storesmultiple responses to the numerous requests. The user of the browser canthen peruse the pages associated with the numerous responses at his orher convenience. That is, the present invention stores the numerousresponses in a transaction database enabling the user to retrieveinformation and/or navigate through a plurality of service providersites (such as an Internet web pages) one after another (withoutrequiring either further user action, except, for example, a next orprevious request, or the browser to again retrieve information and/ornavigate to a site).

[0156] In contrast, when using a conventional browser (such as MicrosoftInternet Explorer), each consecutive request effectively cancels ornegates a previous request, whereby one or more information and/orbranch requests are disadvantageously lost to the user. For example,when a user of a conventional browser issues a first request for a firstInternet file (e.g.. by designating a Uniform Resource Locator (URL))and then issues a second request for a different Internet file, prior toreceiving a response to the first request, the conventional browser willnever display a response to the first request. Accordingly, from theuser's perspective, the second request negates the first request. Thiscan also occur when the user navigates through web sites. For example,if the user “clicks” on a first hypertext link and then “clicks” on asecond hypertext link prior to a jump to the first link, a jump to thefirst link fails to occur. Thus, initiating the second link effectivelynegated initiating the first link. The present invention can be used toovercome these disadvantages of a conventional browser, as is nowdescribed with reference to FIG. 15.

[0157]FIG. 15 is a flow chart 1500 of an exemplary method overcoming theabove mentioned disadvantages of a conventional browser. The methodsteps in FIG. 15 correspond to steps at client device 108. At a firststep 1502, the user enters a first user request, for example, a pagerefresh command, via user interface 108. In response to the first userrequest, at a next step 1504, client device 108 sends a firstinformation request to server 114.

[0158] At a next step 1506, the user enters a second user request viauser interface 108. The first and second user requests can be issuedfrom respective first and second display pages. Also, the timeseparation between the first and second user requests can range betweenmilliseconds and hours or even days. In response to the second userrequest, at a next step 1508, client device 108 sends a secondinformation request to server 114.

[0159] At a next step (not shown) server 114 composes first and secondinformation responses corresponding to the first and second informationrequests and then transmits the first and second information responses.At a next step 1510, client device 108 receives the first informationresponse and stores first information associated with the firstinformation response in client transaction database 310. At a next step1512, client device 108 receives the second information response andstores second information associated with the second informationresponse in client transaction database 310. The time separation betweenreceipt of the first and second server responses can range betweenmilliseconds and hours or even days. Also, in another embodiment, theorder of receipt of the first and second responses is reversed.

[0160] At a next step 1514, client device 108 refreshes a display pageassociated with the second user request with the second information. Inresponse to another user request, at a next step 1516, client device 108retrieves the first information from client transaction database 312 anddisplays the first information to a display page.

[0161] In this manner, client device 108 receives, retains, and displaysas required, multiple server responses to multiple, consecutiveinformation requests, regardless of the order in which the requests wereissued or the responses were received.

[0162] F.1. Hardware and Software Implementations

[0163] Server 114 can perform specific features of the present inventionusing server controllers, which in effect comprise a computer system.Although communication-specific hardware can be used to implement thepresent invention, the following description of a general purposecomputer system is provided for completeness. The present invention ispreferably implemented in software. Alternatively, the invention may beimplemented using hardware or a combination of hardware and software.Consequently, the invention may be implemented in a computer system orother processing system. An example of such a computer system 1600 isshown in FIG. 16. In the present invention, for example, client andserver applications 304 and 306 each executes on distinct computersystems 1600. The computer system 1600 includes one or more processors,such as processor 1604. The processor 1604 is connected to acommunication infrastructure 1606 (for example, a bus or network).Various software implementations are described in terms of thisexemplary computer system. After reading this description, it willbecome apparent to a person skilled in the relevant art how to implementthe invention using other computer systems and/or computerarchitectures.

[0164] Computer system 1600 also includes a main memory 1608, preferablyrandom access memory (RAM), and may also include a secondary memory1610. The secondary memory 1610 may include, for example, a hard diskdrive 1612 and/or a removable storage drive 1614, representing a floppydisk drive, a magnetic tape drive, an optical disk drive, etc. Theremovable storage drive 1614 reads from and/or writes to a removablestorage unit 1618 in a well known manner. Removable storage unit 1618,represents a floppy disk, magnetic tape, optical disk, etc. which isread by and written to by removable storage drive 1614. As will beappreciated, the removable storage unit 1618 includes a computer usablestorage medium having stored therein computer software and/or data.

[0165] In alternative implementations, secondary memory 1610 may includeother similar means for allowing computer programs or other instructionsto be loaded into computer system 1600. Such means may include, forexample, a removable storage unit 1622 and an interface 1620. Examplesof such means may include a program cartridge and cartridge interface(such as that found in video game devices), a removable memory chip(such as an EPROM, or PROM) and associated socket, and other removablestorage units 1622 and interfaces 1620 which allow software and data tobe transferred from the removable storage unit 1622 to computer system1600.

[0166] Computer system 1600 may also include a communications interface1624. Communications interface 1624 allows software and data to betransferred between computer system 1600 and external devices. Examplesof communications interface 1624 may include a modem, a networkinterface (such as an Ethernet card), a communications port, a PCMCIAslot and card, etc. Software and data transferred via communicationsinterface 1624 are in the form of signals 1628 which may be electronic,electromagnetic, optical or other signals capable of being received bycommunications interface 1624. These signals 1628 are provided tocommunications interface 1624 via a communications path 1626.Communications path 1626 carries signals 1628 and may be implementedusing wire or cable, fiber optics, a phone line, a cellular phone link,an RF link and other communications channels.

[0167] In this document, the terms “computer program medium” and“computer usable medium” are used to generally refer to media such asremovable storage drive 1614, a hard disk installed in hard disk drive1612, and signals 1628. These computer program products are means forproviding software to computer system 1600.

[0168] Computer programs (also called computer control logic) are storedin main memory 1608 and/or secondary memory 1610. Computer programs mayalso be received via communications interface 1624. Such computerprograms, when executed, enable the computer system 1600 to implementthe present invention as discussed herein. In particular, the computerprograms, when executed, enable the processor 1604 to implement theprocess of the present invention. Accordingly, such computer programsrepresent controllers of the computer system 1600. In a preferredembodiment of the invention, the processes performed by server 114 andserver application 306, and by client device 108 and client application304, are all performed by computer control logic. Also, client andserver template databases 310 and 330, and client and server transactiondatabases 312 and 332 are stored in respective memories 1608 and/orrespective memories 1610. Where the invention is implemented usingsoftware, the software may be stored in a computer program product andloaded into computer system 1600 using removable storage drive 1614,hard drive 1612 or communications interface 1624.

[0169] In another embodiment, features of the invention are implementedprimarily in hardware using, for example, hardware components such asapplication specific integrated circuits (ASICs). Implementation of thehardware state machine so as to perform the functions described hereinwill be apparent to persons skilled in the relevant art(s).

[0170] V. Conclusion

[0171] While various embodiments of the present invention have beendescribed above, it should be understood that they have been presentedby way of example, and not limitation. It will be apparent to personsskilled in the relevant art that various changes in form and detail canbe made therein without departing from the spirit and scope of theinvention.

[0172] The present invention has been described above with the aid offunctional building blocks illustrating the performance of specifiedfunctions and relationships thereof. The boundaries of these functionalbuilding blocks have been arbitrarily defined herein for the convenienceof the description. Alternate boundaries can be defined so long as thespecified functions and relationships thereof are appropriatelyperformed. Any such alternate boundaries are thus within the scope andspirit of the claimed invention. One skilled in the art will recognizethat these functional building blocks can be implemented by discretecomponents, application specific integrated circuits, processorsexecuting appropriate software and the like or any combination thereof.Thus, the breadth and scope of the present invention should not belimited by any of the above-described exemplary embodiments, but shouldbe defined only in accordance with the following claims and theirequivalents.

[0173] All cited patent documents and publications in the abovedescription are incorporated herein by reference.

What is claimed is:
 1. In a client-server system including one or moreservers and a client device having client transaction database, a clienttemplate database, and a user interface adapted to enable a user toenter requests, a method for displaying pages on the client devicecomprising the steps of: receiving a user request from the user via theuser interface; retrieving a template from the client template databasebased on said user request, said template including one or more datafields; retrieving information from said client transaction databasebased on said template, said information relating to said one or moredata fields; and displaying a page based on said template and saidinformation relating to said one or more data fields.
 2. The method ofclaim 1, further comprising the steps of: receiving a refresh requestfrom the user via the user interface; sending a client request based onsaid refresh request; receiving a server response to said clientrequest; and storing further information in the client transactiondatabase based on said server response, said further informationrelating to at least one of said one or more data fields.
 3. The methodof claim 2, further comprising the step of: displaying an updated pagebased on said template and said further information.
 4. The method ofclaim 2, wherein said template includes at least two data fields, andfurther comprising the step of: displaying an updated page based on saidtemplate, said information, and said further information.
 5. The methodof claim 4, wherein said further information relates to less than all ofsaid at least two data fields.
 6. In a client-server system includingone or more client devices having unique client identifiers and a serverhaving a server template database, a method for responding to a requestfrom a client device comprising the steps of: receiving a client requestfrom a client device, said client request including a templateidentifier and a client identifier; retrieving a template from theserver template database based on the template identifier, said templateincluding one or more data fields; collecting first information relatedto said one or more data fields; determining a server response to saidrequest based on said first information; and sending said serverresponse to said client device.
 7. The method of claim 6, wherein theserver also has a server transaction database, and the method furthercomprising the step of retrieving second information from the servertransaction database based on the template identifier and the clientidentifier, and wherein the step of determining a server responsecomprises determining said response to said request based on said firstinformation and said second information.
 8. The method of claim 7,wherein the step of determining a server response comprises determiningsaid response based on differences between said first information andsaid second information.
 9. The method of claim 6, the step ofcollecting first information comprises collecting said first informationfrom an information store.
 10. A client apparatus that communicates withone or more servers via a communications system, the apparatuscomprising: a client transaction database; a client template database; auser interface adapted to enable a user to enter requests; a firstclient controller adapted to receive a user request from the user viasaid user interface; a second client controller adapted to retrieve atemplate from said client template database based on said user request,said template including one or more data fields; a third clientcontroller adapted to retrieve information from said client transactiondatabase based on said template, said information relating to said oneor more data fields; and a fourth client controller adapted to display apage based on said template and said information relating to said one ormore data fields.
 11. The apparatus of claim 10, further comprising: afifth client controller adapted to send a client request in response toreceiving a refresh request from the user via the user interface; asixth client controller adapted to receive a server response to firstclient request; and a seventh client controller adapted to store furtherinformation in the client transaction database based on said serverresponse, said further information relating to at least one of said oneor more data fields.
 12. The apparatus of claim 11, further comprising:an eighth client controller adapted to display an updated page based onsaid template and said further information.
 13. The apparatus of claim11, wherein said template includes at least two data fields, furthercomprising: an eighth client controller adapted to display an updatedpage based on said template, said information, and said furtherinformation.
 14. The apparatus of claim 13, wherein said furtherinformation relates to less than all of said at least two data fields.15. A server apparatus that communicates with one or more client deviceshaving unique identifiers via a communications system, the apparatuscomprising: a server template database, a first server controlleradapted to receive a client request from a client device, said clientrequest including a template identifier and a client identifier; asecond server controller adapted to retrieve a template from said servertemplate database based on the template identifier, said templateincluding one or more data fields; a third server controller adapted tocollect first information related to said one or more data fields; afourth server controller adapted to determine a server response to saidrequest based on said first information; and a fifth server controlleradapted to send said server response to said client device.
 16. Theapparatus of claim 15, further comprising: a server transactiondatabase, a sixth server controller adapted to retrieve secondinformation from said server transaction database based on said templateidentifier and said client identifier, and wherein said fourth servercontroller determines said response to said request based on said firstinformation and said second information.
 17. The apparatus of claim 16,wherein said fourth server controller determines said response based ondifferences between said first information and said second information.18. The apparatus of claim 15, wherein said third server controllercollects said first information from an information store.
 19. Aclient-server based system for providing a user with information inresponse to user requests, comprising: a server controller that receivesinformation requests over a communication network and transmits serverresponses over said communication network in response to saidinformation requests; and a client device, coupled to said communicationnetwork, adapted to receive user requests and then transmit saidinformation requests based on said user requests, said client deviceincluding a display for displaying information, wherein said clientdevice is adapted to receive, retain, and display multiple serverresponses corresponding to consecutive information requests regardlessof a temporal relationship between said multiple responses and saidconsecutive information requests.